/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package DAO;

import DTO.DaiLyDTO;
import java.util.ArrayList;
import java.util.List;
import javax.swing.table.DefaultTableModel;

/**
 *
 * @author HuuTri
 * Tương tác data với bảng Đại Lý
 */
public class DaiLyDAO {
    static String PROC_CHECK_MADAILY = "spDaiLyCheckMaDaiLy";
    static String PROC_GET_ID = "spDaiLyGetNewId";
    static String PROC_INSERT = "spDaiLyInsert";
    static String PROC_DELETE = "spDaiLyDelete";
    static String PROC_UPDATE = "spDaiLyUpdate";
    static String PROC_SELECT_ALL = "spDaiLySelectAll";
    
    

    /**
     * Lấy toàn bộ danh sách mã quận
     * @return 
     */
    public static List<String> getListMaQuan() {
        return QuanDAO.getListMaQuan();
    }
    
    /**
     * Lấy danh sách mã quận
     * @return 
     */
    public static List<String> getListMaLoaiDaiLy() {
        return LoaiDaiLyDAO.getListMaLoaiDaiLy();
    }
    
    /**
     * Kiểm tra mã đại lý
     */
    public static boolean checkMaDaiLy(DaiLyDTO daily) {
        boolean res = true;
        
        DefaultTableModel tableModel = SQLHelperDAO.execQuery(PROC_CHECK_MADAILY, getListParams(daily));
        if (tableModel.getRowCount() > 0) {
            res = false;
        }
        
        return res;
    }
    
    /**
     * Lấy số định danh mới
     * @param daily
     * @return 
     */
    public static int getNewId() {
        return MaSoDAO.getMaSo(DaiLyDTO.TABLE);
    }
    
    /*Thêm một đại lý*/
    public static boolean insert(DaiLyDTO daily) {
        boolean res = true;
        
        try {
            SQLHelperDAO.execNonQuery(PROC_INSERT, getListParams(daily));
            MaSoDAO.updateMaSo(DaiLyDTO.TABLE);
        } catch (Exception ex) {
            res = false;
        }
        
        return res;
    }
    
    /*Xóa một đại lý dựa vào mã đại lý*/
    public static boolean delete(DaiLyDTO daily) {
        boolean res = true;
        
        try {
            SQLHelperDAO.execNonQuery(PROC_DELETE, getListParams(daily));
        }catch (Exception ex) {
            res = false;
        }
        
        return res;
    }
    
    /*Cập nhật đại lý dựa vào mã đại lý*/
    public static boolean update(DaiLyDTO daily) {
        boolean res = true;
        
        try {
            SQLHelperDAO.execNonQuery(PROC_UPDATE, getListParams(daily));
        } catch (Exception ex) {
            res = false;
        }
        
        return res;
    }
    
    /*Lấy toàn bộ thông tin đại lý*/
    public static DefaultTableModel getTableModel() {
        return SQLHelperDAO.execQuery(PROC_SELECT_ALL, null);
    }
    
    /*Lấy danh sách tham số từ dại lý*/
    private static List<Parameter> getListParams(DaiLyDTO daily) {
        List<Parameter> listParams = new ArrayList<>();
        
        listParams.add(new Parameter(DaiLyDTO.ID, daily.getId()));
        listParams.add(new Parameter(DaiLyDTO.MA_DAI_LY, daily.getMaDaiLy()));
        listParams.add(new Parameter(DaiLyDTO.TEN_DAI_LY, daily.getTenDaiLy()));
        listParams.add(new Parameter(DaiLyDTO.MA_LOAI_DAI_LY, daily.getMaLoaiDaiLy()));
        listParams.add(new Parameter(DaiLyDTO.MA_QUAN, daily.getMaQuan()));
        listParams.add(new Parameter(DaiLyDTO.TIEN_NO, daily.getTienNo()));
        listParams.add(new Parameter(DaiLyDTO.DIEN_THOAI, daily.getDienThoai()));
        listParams.add(new Parameter(DaiLyDTO.DIA_CHI, daily.getDiaChi()));
        listParams.add(new Parameter(DaiLyDTO.EMAIL, daily.getEmail()));
        listParams.add(new Parameter(DaiLyDTO.NGAY_TIEP_NHAN, daily.getNgayTiepNhan()));
        
        
        
        return listParams;
    }
}
